DACSS 604 Project (Final Technical Write-Up)

Author

Rubi Gonzalez

Changes from Previous 603 Research

Original Research

My 604 final project was about worrying about climate change, and it is a revision of a previous project (from 603). Before I dive into the changes for this time around, allow me to describe the original project first. When I first researched the question “Why are some individuals more prone to worry about climate change than others?” last year, my independent variables that I tested were race, education, and gender (in other words, demographics). In addition, I was using Y ale data from the year 2021. The layout I decided to have for my final presentation of my 603 project was an academic poster. The intended audience was meant to be researchers or academics who were also interested in better understanding the worries of climate change, and how that might affect different people. I had expected my audience to be familiar with the topic of climate change and its dangers. However, I did not necessarily expect my audience to know a lot about how climate change would affect worry levels of different demographics. Lastly, I expected them to have an intermediate understanding of statistical regression models as I used methods such as Odds Ratio to explain my findings at the end of my project.

Updated Research

My revision for this current project had quite a few changes. Firstly, I did still study the same question, however, I wanted to base my project on perceived harm and believed timing of harm, instead of demographics. My new independent variables are harm_personally, harm_US, harm_future_gen, harm_plants_animals, and when_harm_US. The first four variables measure how much harm each group the respondent believes they will face because of climate change. when_harm_US measures when the respondents believe climate change will harm people living in the US. Though from the same Y ale data set, I also changed my data by using the October 2023 wave instead of the 2021 data again. I wanted to use the most recent data for this year instead of using an old one. An additional change was the layout, I did not recreate a poster for academics this time. Instead, I created an interactive dashboard for a more general audience. I imagine this general audience is interested in climate change and its effects on worry, but might not be well versed with statistical regression. Due to these changes, my format changed, my graphs changed because I used different independent variables and the data I used changed as well. My graphs also improved a lot! Instead of being static like before, now people can hover over the graphs, play with what variables are on the graphs, and get more meaningful information from them overall. I believe this makes the information more engaging! Additionally, I used Bertin’s visual variables to enhance my graphs by helping me be selective about what colors I should use on the graph for ordered variables. Another change to my project were my sources as I was asking my research question from a different angle, they are all new. Lastly, instead of explaining my findings with Odds-Ratio, I used probabilities because that is easier for a general audience to understand without much explanation. Though the research question was the same, it is essentially a completely new project, but it was fun seeing it change into something better!

Research Question:

The glaciers are melting, the seas are rising, and the weather is becoming more extreme, but the harms of climate change are a lot closer to home for Americans than some may think. Climate change has been a topic since the 1800s, however, concern has only intensified since the 1950s (Lindsey, and Luann Dahlman, 2024). The topic has become another area of worry for many. A 2023 Yale research study found that 72% of Americans believe climate change is happening and 64% of Americans are worried about climate change in some capacity (“Yale Climate Opinion Maps 2023.”). For my final project, I wish to explore this question:

Why are some individuals more prone to worry about climate change than others?

When I was trying to think about how I could improve my old project, I stumbled upon a research finding that inspired me to look into harm level for different groups. They found people worrying about climate change because they believe their children will be facing the consequences of it but not themselves (Threadgold, 2012). I found this interesting because I wanted to see if that conclusion held up with perceived harm levels for different groups (personal, US, future generations, and plants and animals). I was inspired to look into timing as well because there is a report that found that 39% of American respondents believed they were being affected by climate change right now (Narawad and Julian Wettengel, 2024). Thus, I decided to investigate the association of timing with worry as well. Unfortunately, there is little to no research on perceived harm level for different groups (or any for that matter) and how they affect worry. Nor are there studies that focus on the possible link of worrying about climate change and the belief of when climate change will start harming people living the United States. From what I have gathered, I am the first to study such variables regarding climate change worry.

Thus, my final project aims to explore the potential harm level to different groups, such as personal, the US, future generations, and plants/animals, and the timing of when people believe climate change will harm people and whether these variables affect if a person is more prone to worry about climate change. I believe exploring my question is important because the world currently experiencing the beginning consequences of the climate crisis, not just for natural disasters, but also for the mental well-being of individuals.

Hypothesis

  • Hypothesis A: I believe that the more an American believes climate change will harm living things (personal, people in the US, future generations, and plants/animals) at a more intense level, the more likely they are to worry about climate change at a higher level.
  • Hypothesis B: I believe that the timing of when Americans think climate change will harm people living in the US will also affect their worry level.

Descriptive Statistics

The data is from the Yale Program on Climate Change Communication and was downloaded from https://climatecommunication.yale.edu/visualizations-data/americans-climate-views/. Originally, the data set had 33,265 observations as the nationally representative surveys were conducted once in 2008 and 2022, and then twice a year from 2010 to 2023. All questionnaires were self-administered by respondents in a web-based environment. Samples were drawn from the Ipsos (formerly GfK) KnowledgePanel, an online panel of members drawn using probability sampling methods. Prospective members were recruited using a combination of random digit dial and address-based sampling techniques that cover virtually all (non-institutional) resident phone numbers and addresses in the United States. Those contacted who chose to join the panel but did not have access to the Internet were loaned computers and given Internet access so they could participate. The sample therefore includes a representative cross-section of American adults – irrespective of whether they had Internet access, used only a cell phone, etc.

Loading and Cleaning data

# necessary libraries

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.0
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.0
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(haven)
library(dplyr)
library(ggplot2)
library(pollster)
library(knitr)
library(corrplot)
corrplot 0.92 loaded
library(Hmisc)

Attaching package: 'Hmisc'

The following objects are masked from 'package:dplyr':

    src, summarize

The following objects are masked from 'package:base':

    format.pval, units
library(nnet)
library(stargazer)

Please cite as: 

 Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
 R package version 5.2.3. https://CRAN.R-project.org/package=stargazer 
library(MASS)

Attaching package: 'MASS'

The following object is masked from 'package:dplyr':

    select
library(broom)
library(plotly)

Attaching package: 'plotly'

The following object is masked from 'package:MASS':

    select

The following object is masked from 'package:Hmisc':

    subplot

The following object is masked from 'package:ggplot2':

    last_plot

The following object is masked from 'package:stats':

    filter

The following object is masked from 'package:graphics':

    layout
library(dotwhisker)
Warning: package 'dotwhisker' was built under R version 4.3.3
# uploading data
ccamData <- read_sav("CCAMData2023.sav")
# creating my smaller dataset!
myData <- ccamData %>%
  dplyr::select(wave,  happening, cause_recoded, worry, harm_personally, harm_US, harm_future_gen, harm_plants_animals,
                when_harm_US, generation, educ_category) %>% 
  rename("education" = "educ_category") 

# subsetting with data for the last available wave, Oct 2023
myData <- subset(myData, wave == 29)
# making variables numeric or factors
myData$wave <- as.numeric(myData$wave)
myData$happening <- as.factor(myData$happening)
myData$cause_recoded <- as.factor(myData$cause_recoded)
myData$generation <- as.factor(myData$generation)
myData$education <- as.factor(myData$education)
myData$worry <- as.numeric(myData$worry)
myData$harm_personally <- as.factor(myData$harm_personally)
myData$harm_US <- as.factor(myData$harm_US)
myData$harm_future_gen <- as.factor(myData$harm_future_gen)
myData$harm_plants_animals <- as.factor(myData$harm_plants_animals)
myData$when_harm_US <- as.factor(myData$when_harm_US)
# recoding variables
myData <- myData %>%
  mutate(wave = recode(wave, "29" = "Oct 2023"),
         
         cause_recoded = recode(cause_recoded, "3" = "CC_not_happening", "4" = "Nat_changes", "5" = "Human_act_and_nat_changes",
                                "6" = "human_act"),
         
         happening = recode(happening, "1" = "No", "3" = "Yes"),
         
         harm_personally = recode(harm_personally, "1" = "Not at all", "2" = "Only a little", "3" = "A moderate amount", 
                                  "4" = "A great deal"),
         
         harm_US = recode(harm_US, "1" = "Not at all", "2" = "Only a little", "3" = "A moderate amount", "4" = "A great deal"),
         
         harm_future_gen = recode(harm_future_gen, "1" = "Not at all", "2" = "Only a little", "3" = "A moderate amount", 
                                  "4" = "A great deal"),
         
         harm_plants_animals = recode(harm_plants_animals, "1" = "Not at all", "2" = "Only a little", "3" = "A moderate amount",
                                      "4" = "A great deal"),
         
         when_harm_US = recode(when_harm_US, "1" = "Never", "2" = "one_hun_years", "3" = "fifty_years", "4" = "twn_five_years",
                               "5" = "ten_years", "6" = "right_now"),

         
         generation = recode(generation, "1" = "GenZ", "2" = "Millennials", "3" = "GenerationX", "4" = "BabyBoomers", 
                             "5" = "Silent", "6" = "Greatest"),
         
         education = recode(education, "1" = "lessHighSchool", "2" = "highSchool", "3" = "someCollege", 
                            "4" = "bachelorDegreeUp"))
# getting rid of data where people refused to answer (-1) or said they "don't know" (0)

myData = filter(myData, worry != "-1")

myData = filter(myData, !(cause_recoded %in% c("-1", "1", "2")))
myData$cause_recoded <- droplevels(myData$cause_recoded)


myData = filter(myData, !(happening %in% c("-1", "2"))) # 2 is "don't know"
myData$happening <- droplevels(myData$happening)

myData = filter(myData, !(harm_personally %in% c("-1", "0")))
myData$harm_personally <- droplevels(myData$harm_personally)

myData = filter(myData, !(harm_US %in% c("-1", "0")))
myData$harm_US <- droplevels(myData$harm_US)

myData = filter(myData, !(harm_future_gen %in% c("-1", "0")))
myData$harm_future_gen <- droplevels(myData$harm_future_gen)

myData = filter(myData, !(harm_plants_animals %in% c("-1", "0")))
myData$harm_plants_animals <- droplevels(myData$harm_plants_animals)

myData = filter(myData, generation != "Greatest")
myData$generation <- droplevels(myData$generation)

myData = filter(myData, when_harm_US != "-1")
myData$when_harm_US <- droplevels(myData$when_harm_US)
# checking dataset
head(myData, 20)
# A tibble: 20 × 11
   wave    happening cause_recoded worry harm_personally harm_US harm_future_gen
   <chr>   <fct>     <fct>         <dbl> <fct>           <fct>   <fct>          
 1 Oct 20… Yes       human_act         4 A great deal    A grea… A great deal   
 2 Oct 20… Yes       Nat_changes       3 A moderate amo… A grea… A great deal   
 3 Oct 20… Yes       human_act         3 A great deal    A grea… A great deal   
 4 Oct 20… Yes       Nat_changes       2 A moderate amo… A grea… A moderate amo…
 5 Oct 20… No        Nat_changes       1 Not at all      Not at… Not at all     
 6 Oct 20… No        CC_not_happe…     1 Not at all      Not at… Not at all     
 7 Oct 20… No        Nat_changes       1 Not at all      A mode… A moderate amo…
 8 Oct 20… Yes       human_act         4 A moderate amo… A mode… A moderate amo…
 9 Oct 20… Yes       human_act         3 A moderate amo… A mode… A great deal   
10 Oct 20… Yes       human_act         3 A great deal    A grea… A great deal   
11 Oct 20… Yes       human_act         3 A great deal    A grea… A great deal   
12 Oct 20… Yes       Nat_changes       4 A great deal    A grea… A great deal   
13 Oct 20… Yes       Nat_changes       3 Only a little   Only a… A moderate amo…
14 Oct 20… Yes       human_act         3 A moderate amo… A mode… A great deal   
15 Oct 20… Yes       human_act         3 A great deal    A grea… A great deal   
16 Oct 20… Yes       Nat_changes       3 A moderate amo… A mode… A great deal   
17 Oct 20… Yes       Nat_changes       3 A moderate amo… A mode… A moderate amo…
18 Oct 20… No        human_act         2 Only a little   A mode… A moderate amo…
19 Oct 20… Yes       Nat_changes       3 A great deal    A grea… A great deal   
20 Oct 20… Yes       Human_act_an…     2 Not at all      Not at… A moderate amo…
# ℹ 4 more variables: harm_plants_animals <fct>, when_harm_US <fct>,
#   generation <fct>, education <fct>

To avoid multicollinearity, so I filtered the wave to Oct 2023. Therefore, the data set I will be analyzing is a nationally representative survey of U.S. adults aged 18 and older from October 2023 that contains 1,003 observations. This data set has 10 important variables, such as level of worry, level of harm, when climate change will harm, as well as if they believe climate change is happening or not, and lastly if they believed cause of climate change due to human activities.

Important variables of interest are:

  • DV: Level of worry (worry)
  • IV: Level of harm (harm_personally, harm_US, harm_future_gen, harm_plants_animals)
  • IV: When climate change will harm (when_harm)
  • Control Variables: happening, cause_recoded, generations, and race

Additionally, I got rid of any answers where the respondent either refused to answer or said “they don’t know” for variables worry, harm_personally, and harm_US. I recoded:

  • wave
  • recorded cause
  • happening
  • the harm of groups
  • when it will harm
  • education
  • race

The purpose of recoding was so I could better understand the data set. I did not recode the variables for worry yet. Here are the levels for my dependent and independent variables:

Levels of worry:

  • 1 = Not at all worried
  • 2 = Not very worried
  • 3 = Somewhat worried
  • 4 = Very worried

Levels of harm_personally, and harm_US, harm_future_gen, and harm_plants_animals:

  • Not at all
  • Only a little
  • A moderate amount
  • A great deal

Timing for when_harm:

  • Never
  • 100 years
  • 50 years
  • 25 years
  • 10 years
  • Right now
# creating the reference variable now
myData$happening <- relevel(myData$happening, ref = "No")
myData$education <- relevel(myData$education, ref = "lessHighSchool")
myData$cause_recoded <- relevel(myData$cause_recoded, ref = "Human_act_and_nat_changes")
myData$harm_personally <- relevel(myData$harm_personally, ref = "Not at all")
myData$harm_US <- relevel(myData$harm_US, ref = "Not at all")
myData$harm_future_gen <- relevel(myData$harm_future_gen, ref = "Not at all")
myData$harm_plants_animals <- relevel(myData$harm_plants_animals, ref = "Not at all")
myData$when_harm_US <- relevel(myData$when_harm_US, ref = "Never")

Creating Subsets of the Data (there are two)

# only getting people who believe climate change is happening

sub_hap <- myData

sub_hap <- filter(sub_hap, happening != "No")
# only getting people who believe climate change is happening AND its caused by human activities in some capacity

sub_cause_hap <- sub_hap

sub_cause_hap <- filter(sub_cause_hap, !(cause_recoded %in% c("CC_not_happening", "Nat_changes")))

I created two new subsets as I will be using them for my models later on so I can compare them. The first data frame is capturing people who believe climate change is happening. The second data frame is getting people who believe climate change is happening AND that it is caused by human activities in some capacity. I believe this is important because these respondents generally agree with what scientists believe today: that climate change is happening and it is because of human activities (“What Is Climate Change?” United Nations).

Visualization of Data

In this section, I am going to create multiple bar plots that are going to visualize worry about climate change by harm of different groups (personal, the US, future generations, and the plants/animals) and when climate change will harm.

% of Worry

graph_myD <- myData %>%
  group_by(worry) %>%
  summarise(count = n(),
            percentage = round((n() / nrow(myData)) * 100), 2) %>% 
  mutate(worry = recode(worry,
                        "1" = "Not at all worried",
                        "2" = "Not very worried",
                        "3" = "Somewhat worried",
                        "4" = "Very worried"))

p1 <- plot_ly(data = graph_myD, x = ~ worry,
              y = ~ percentage,
              text = ~ paste(percentage, "%"),
              textposition = "inside",
              hovertext = ~paste(worry, "\n", "Percentage = ", percentage, "%"),
              hoverinfo = "text",
              marker = list(color = c("#C6DBEF", "#6BAED6", "#2171B5", "#08306B"))) %>% 
        add_bars() %>% 
        layout(title = "Worry of Climate Change",
                xaxis = list(title = "Worry"),
                yaxis = list(title = "Percentage"))

p1

I first decided to make a simple graph showing the worry level Americans may be in when it comes to climate change. Based on the Yale Survey that took place in October of 2023, a majority of Americans are worried about climate change in some sense.

  • 72% of American respondents said they were somewhat or very worried about climate change.
  • Respondents who chose not very worried or not at all worried made up only 28%.

Harm types

harms <- myData %>% 
  group_by(harm_personally, harm_US, harm_future_gen, harm_plants_animals)

harm_longer <- pivot_longer(harms,
                            cols = starts_with("harm_"),
                            names_to = "harm_type",
                            values_to = "response") %>% 
count(harm_type, response)

response_counts <- harm_longer %>% 
  group_by(response) %>% 
  summarise(total = sum(n))

harm_longer <- harm_longer %>% 
  left_join(response_counts, by = "response") %>% 
  mutate(percentage = round((n / total) * 100), 2)

harm_longer$response <- factor(harm_longer$response,
                               levels = c("Not at all", "Only a little", "A moderate amount", "A great deal"))
p2 <- plot_ly(harm_longer, x = ~response, y = ~percentage, color = ~harm_type, type = "bar",
              barmode = "group", 
              text = ~ paste(percentage, "%"), 
              textposition = "outside",
              hovertext = ~paste(harm_type, "\n", "Percentage = ", percentage, "%"),
              hoverinfo = "text",
              colors = RColorBrewer::brewer.pal(4, "Dark2")) %>%
  layout(title = "Percentage of Preceived Harm from Climate Change",
                xaxis = list(title = "Harm Level"),
                yaxis = list(title = "Percentage"))

p2
Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

When looking at the perceived harm that each group can face:

Respondents overwhelming believe future generations as well as plants and animals will be harmed “a great deal” by climate change (over 60% for both groups). For climate change harming people in the United States, respondents were more likely to choose ‘a great deal’ or ‘a moderate amount’ (totals up to 70%). A great deal was the highest response though. Though respondents believe climate change will harm other groups severely, they are not as likely to believe climate change will harm them personally as much. 62% of believe climate change will harm them ‘only a little’ or a ‘moderate amount, but drops to 18% for ’a great deal.’

Level of Harm for Different Groups by Worry

wPersonally <- myData %>%
  group_by(harm_personally) %>% 
  mutate(per_count = n()) %>% 
  group_by(harm_personally, worry) %>% 
  mutate(worry = recode(worry,
                        "1" = "Not at all worried",
                        "2" = "Not very worried",
                        "3" = "Somewhat worried",
                        "4" = "Very worried")) %>% 
  summarise(count = n(),
            percentage = round((count / first(per_count)) * 100)) %>% 
  ungroup()
`summarise()` has grouped output by 'harm_personally'. You can override using
the `.groups` argument.
#wCause[nrow(wCause) + 1,] <- list("Climate Change Not Happening", "Very worried", 0, 0)

wPersonally <- data.frame(wPersonally)
wPersonally$harm_personally <- factor(wPersonally$harm_personally,
                   levels = c("Not at all", "Only a little", "A moderate amount", "A great deal"))

wPersonally$worry <- factor(wPersonally$worry,
                   levels = c("Not at all worried", "Not very worried", "Somewhat worried", "Very worried"))


g <- ggplot(wPersonally, aes(x = harm_personally, y = percentage)) +
  geom_bar(stat = "identity", fill = "#3B1E54") +
  labs(title = "Worry of Climate Change by Belief of Personal Harm", x = "Harm Level", y = "Percentage") +
  theme_bw() +
  facet_wrap(~worry) +
  coord_flip()

p <- ggplotly(g)

p

As the personal harm level increased, the percentage of people growing increasingly worried also rose. For example, 76% of those who choose “a great deal” for personal harm were very worried!

wUS <- myData %>%
  group_by(harm_US) %>% 
  mutate(US_count = n()) %>% 
  group_by(harm_US, worry) %>% 
  mutate(worry = recode(worry,
                        "1" = "Not at all worried",
                        "2" = "Not very worried",
                        "3" = "Somewhat worried",
                        "4" = "Very worried")) %>% 
  summarise(count = n(),
            percentage = round((count / first(US_count)) * 100)) %>% 
  ungroup()
`summarise()` has grouped output by 'harm_US'. You can override using the
`.groups` argument.
#wCause[nrow(wCause) + 1,] <- list("Climate Change Not Happening", "Very worried", 0, 0)

wUS <- data.frame(wUS)
wUS$harm_US <- factor(wUS$harm_US,
                   levels = c("Not at all", "Only a little", "A moderate amount", "A great deal"))

wUS$worry <- factor(wUS$worry,
                   levels = c("Not at all worried", "Not very worried", "Somewhat worried", "Very worried"))


g <- ggplot(wUS, aes(x = harm_US, y = percentage)) +
  geom_bar(stat = "identity", fill = "#FF2929") +
  labs(title = "Worry of Climate Change by Belief of Harm to US", x = "Harm Level", y = "Percentage") +
  theme_bw() +
  facet_wrap(~worry) +
  coord_flip()

p <- ggplotly(g)

p

For harm of the US, as the harm level increase, worry level gradually increased along with it. For a great deal, 70% were very worried

wFuture <- myData %>%
  group_by(harm_future_gen) %>% 
  mutate(future_count = n()) %>% 
  group_by(harm_future_gen, worry) %>% 
  mutate(worry = recode(worry,
                        "1" = "Not at all worried",
                        "2" = "Not very worried",
                        "3" = "Somewhat worried",
                        "4" = "Very worried")) %>% 
  summarise(count = n(),
            percentage = round((count / first(future_count)) * 100)) %>% 
  ungroup()
`summarise()` has grouped output by 'harm_future_gen'. You can override using
the `.groups` argument.
#wCause[nrow(wCause) + 1,] <- list("Climate Change Not Happening", "Very worried", 0, 0)

wFuture <- data.frame(wFuture)
wFuture$harm_future_gen <- factor(wFuture$harm_future_gen,
                   levels = c("Not at all", "Only a little", "A moderate amount", "A great deal"))

wFuture$worry <- factor(wFuture$worry,
                   levels = c("Not at all worried", "Not very worried", "Somewhat worried", "Very worried"))


g <- ggplot(wFuture, aes(x = harm_future_gen, y = percentage)) +
  geom_bar(stat = "identity", fill = "#FAB12F") +
  labs(title = "Worry of Climate Change by Belief of Harm to Future Gens", x = "Harm Level", y = "Percentage") +
  theme_bw() +
  facet_wrap(~worry) +
  coord_flip()

p <- ggplotly(g)

p

Similar to the previous graphs as harm level increased so did the worry level for future generations. Interestingly, the percentage of very worried (52%) is not as high as personal harm (76%) or harm to the US (70%).

wPA <- myData %>%
  group_by(harm_plants_animals) %>% 
  mutate(PA_count = n()) %>% 
  group_by(harm_plants_animals, worry) %>% 
  mutate(worry = recode(worry,
                        "1" = "Not at all worried",
                        "2" = "Not very worried",
                        "3" = "Somewhat worried",
                        "4" = "Very worried")) %>% 
  summarise(count = n(),
            percentage = round((count / first(PA_count)) * 100)) %>% 
  ungroup()
`summarise()` has grouped output by 'harm_plants_animals'. You can override
using the `.groups` argument.
#wCause[nrow(wCause) + 1,] <- list("Climate Change Not Happening", "Very worried", 0, 0)

wPA <- data.frame(wPA)
wPA$harm_plants_animals <- factor(wPA$harm_plants_animals,
                   levels = c("Not at all", "Only a little", "A moderate amount", "A great deal"))

wPA$worry <- factor(wPA$worry,
                   levels = c("Not at all worried", "Not very worried", "Somewhat worried", "Very worried"))


g <- ggplot(wPA, aes(x = harm_plants_animals, y = percentage)) +
  geom_bar(stat = "identity", fill = "#54473F") +
  labs(title = "Worry of Climate Change by Belief of Harm to Plants & Animals", x = "Harm Level",
       y = "Percentage") +
  theme_bw() +
  facet_wrap(~worry) +
  coord_flip()

p <- ggplotly(g)

p

Like all the graphs before it, as harm level increased so did the worry level for plants and animals. Once again, percentage of very worried (53%) for plants and animals was not as high as it was for other groups.

Based on these plots, respondents seem to be more concerned with their own personal well-being or those around them right now (i.e. neighbors, fellow Americans) when it comes to being harmed by climate change. This is surprising as people tend to worry more about how future generations are the ones that will have to face the consequences.

wWhen <- myData %>%
  group_by(when_harm_US) %>% 
  mutate(when_count = n()) %>% 
  group_by(when_harm_US, worry) %>% 
  mutate(worry = recode(worry,
                        "1" = "Not at all worried",
                        "2" = "Not very worried",
                        "3" = "Somewhat worried",
                        "4" = "Very worried")) %>% 
  summarise(count = n(),
            percentage = round((count / first(when_count)) * 100)) %>% 
  ungroup()
`summarise()` has grouped output by 'when_harm_US'. You can override using the
`.groups` argument.
wWhen <- data.frame(wWhen)

#wWhen
wWhen$when_harm_US <- factor(wWhen$when_harm_US,
                   levels = c("Never", "one_hun_years", "fifty_years", "twn_five_years", "ten_years", "right_now"))

wWhen <- wWhen %>% 
  mutate(when_harm_US = recode(when_harm_US, "one_hun_years" = "100 years", "fifty_years" = "50 years", "twn_five_years" = "25 years",
                               "ten_years" = "10 years", "right_now" = "Now"))

wWhen$worry <- factor(wWhen$worry,
                   levels = c("Not at all worried", "Not very worried", "Somewhat worried", "Very worried"))


g <- ggplot(wWhen, aes(x = when_harm_US, y = percentage)) +
  geom_bar(stat = "identity", fill = "#FF885B") +
  labs(title = "Worry of Climate Change by When it will Harm the US", x = "When it will Harm the US", y = "Percentage") +
  theme_bw() +
  facet_wrap(~worry) +
  coord_flip()

p <- ggplotly(g)

p

When looking at timing of harm, we also see a similar pattern! As the harm becomes closer to present day, the more likely respondents were to be ‘very worried’. I think it would be interesting to see if timing and the harms of the different groups have some type of association.

Correlation Map

heat_data <- myData %>% 
  mutate(cause_recoded = recode(cause_recoded, "CC_not_happening" = 1, "Nat_changes" = 2, "Human_act_and_nat_changes" = 3,
                                "human_act" = 4),
         
         happening = recode(happening, "No" = 1, "Yes" = 2),
         
         harm_personally = recode(harm_personally, "Not at all" = 1, "Only a little" = 2, "A moderate amount" = 3,
                                  "A great deal" = 4),
         
         harm_US = recode(harm_US, "Not at all" = 1, "Only a little" = 2, "A moderate amount" = 3, "A great deal" = 4),
         
         harm_future_gen = recode(harm_future_gen, "Not at all" = 1, "Only a little" = 2, "A moderate amount" = 3,
                                  "A great deal" = 4),
         
         harm_plants_animals = recode(harm_plants_animals, "Not at all" = 1, "Only a little" = 2, "A moderate amount" = 3,
                                      "A great deal" = 4),
         
         when_harm_US = recode(when_harm_US, "Never" = 1, "one_hun_years" = 2, "fifty_years" = 3, "twn_five_years" = 4,
                               "ten_years" = 5, "right_now" = 6))

heat_data <- heat_data %>% dplyr::select(worry, harm_personally, harm_US, harm_future_gen,
                                         harm_plants_animals, when_harm_US)
library(ggcorrplot)
library(reshape2)

Attaching package: 'reshape2'
The following object is masked from 'package:tidyr':

    smiths
variable_order <- c("worry", setdiff(names(heat_data), "worry"))

heat_data <- heat_data[, variable_order]

corr_mat <- round(cor(heat_data), 2)

p_mat <- cor_pmat(heat_data)

corr_mat <- ggcorrplot(
  corr_mat, type = "lower",
  outline.color = "white",
  p.mat = p_mat,
  lab = F) +
  labs(title = "Correlation plot of all variables", x = "Variable 1", y = "Variable 2")
pl <- corr_mat + scale_fill_gradient2(limit = c(0.6,1), low = "blue", high =  "darkred", mid = "pink", midpoint = 0.8)
Scale for fill is already present.
Adding another scale for fill, which will replace the existing scale.
ggplotly(pl)
# ggplotly(corr_mat)

I created this heat map to see if any of the variables had strong ties to one another and to also see how correlated they were to worry. Based on the graph:

  • Worry has a strong association with each variable (over 0.7).
  • I see that the two groups that have a higher correlation with timing are future generations (0.80) and plants/animals (0.81).
  • harm_future_gen and harm_plants_animals have the highest correlation (0.9).

Hypothesis testing

Level of worry/harm will be the outcome variable for my five independent variables:

  • harm_personally
  • harm_US
  • harm_future_generation
  • harm_plants_animals
  • when_harm

This hypothesis test will display whether, if any, these variables impact an individual to be more or less worried about climate change. Before I continue, I am going to have four control variables:

  • generation
  • race
  • happening (respondents believe climate change is happening)
  • cause (believes human activities caused climate change in some capacity)

Result of the hypothesis test (and thus an answer to the research question)

# testing my hypothesis with the ordinal logit regression 
fitData1 <- myData %>%
  mutate(worry = recode(worry, "1" = "Not at all worried", "2" = "Not very worried", "3" = "Somewhat worried", "4" = "Very worried"))

fitData1$worry <- as.factor(fitData1$worry)
# Ordinal logit model for all models

fitwM1 <- polr(worry ~ happening + cause_recoded + harm_personally + harm_US + harm_future_gen + harm_plants_animals  +
                 when_harm_US + generation + education, data = fitData1, Hess = T)
Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
stargazer(fitwM1, align = TRUE, type = "text", report = ('vc*p'), column.sep.width = "-1pt",  no.space = TRUE,
          title = "Ordered Logistic Regression Results", column.labels = c("Original"))

Ordered Logistic Regression Results
================================================================
                                         Dependent variable:    
                                     ---------------------------
                                                worry           
                                              Original          
----------------------------------------------------------------
happeningYes                                    0.379           
                                              p = 0.297         
cause_recodedCC_not_happening                 -1.507**          
                                              p = 0.024         
cause_recodedNat_changes                      -0.858**          
                                              p = 0.024         
cause_recodedhuman_act                          0.139           
                                              p = 0.686         
harm_personallyOnly a little                  1.395***          
                                             p = 0.0004         
harm_personallyA moderate amount              2.049***          
                                             p = 0.00001        
harm_personallyA great deal                   2.595***          
                                             p = 0.00000        
harm_USOnly a little                           -0.048           
                                              p = 0.920         
harm_USA moderate amount                        0.292           
                                              p = 0.600         
harm_USA great deal                            1.502**          
                                              p = 0.012         
harm_future_genOnly a little                   0.982*           
                                              p = 0.071         
harm_future_genA moderate amount               1.576**          
                                              p = 0.019         
harm_future_genA great deal                   2.160***          
                                              p = 0.003         
harm_plants_animalsOnly a little                0.509           
                                              p = 0.341         
harm_plants_animalsA moderate amount           1.107*           
                                              p = 0.100         
harm_plants_animalsA great deal                1.708**          
                                              p = 0.017         
when_harm_USone_hun_years                       0.416           
                                              p = 0.348         
when_harm_USfifty_years                        -0.080           
                                              p = 0.868         
when_harm_UStwn_five_years                      0.288           
                                              p = 0.572         
when_harm_USten_years                          1.303**          
                                              p = 0.014         
when_harm_USright_now                         2.024***          
                                             p = 0.00005        
generationMillennials                           0.207           
                                              p = 0.515         
generationGenerationX                           0.199           
                                              p = 0.533         
generationBabyBoomers                           0.135           
                                              p = 0.663         
generationSilent                               -0.419           
                                              p = 0.306         
educationhighSchool                             0.343           
                                              p = 0.418         
educationsomeCollege                            0.011           
                                              p = 0.980         
educationbachelorDegreeUp                       0.177           
                                              p = 0.662         
----------------------------------------------------------------
Observations                                     818            
================================================================
Note:                                *p<0.1; **p<0.05; ***p<0.01

I tested my hypothesis with the Ordinal Logit Regression because it is a statistical analysis model that displays the relationship between ordinal response variables and multiple explanatory variables, which is the type of data I am using for this study.

Based on the model, I can now comment on my hypotheses.

  • Hypothesis A: Based on this analysis, as harm level of all groups increases, so does the worry level for climate change. Therefore, this analysis supports my hypothesis that the more an American believes climate change will harm living things (personal, people in the US, future generations, and plants/animals) at a more intense level, the more likely they are to worry about climate change at a higher level. (Note: reference level of the groups’ harm is ‘not at all’).

    • harm_personally: significant at all levels
      • only a little: < 0.1
      • a moderate amount: < 0.01
      • a great deal: < 0.01
    • harm_US: significant for one level
      • a great deal: < 0.01
    • harm_future_gen: significant at all levels but they have different p-values
      • only a little: < 0.1
      • a moderate amount: < 0.05
      • a great deal: < 0.01
    • harm_plants_animals: significant for 2 levels
      • a great deal: < 0.05
      • a moderate amount: < 0.1
  • Hypothesis B: This analysis also supports my hypothesis that the timing of when Americans think climate change will harm people living in the US will also affect their worry level. There is significance for:

    • ten_years (p-value < 0.05)
    • right_now (p-value < 0.01)
      • Note: reference level of timing is ‘Never.’

Model comparisons

# testing my hypothesis with the ordinal logit regression 
fitData2 <- sub_hap %>%
  mutate(worry = recode(worry, "1" = "Not at all worried", "2" = "Not very worried", "3" = "Somewhat worried", "4" = "Very worried"))

fitData2$worry <- as.factor(fitData2$worry)
# testing my hypothesis with the ordinal logit regression 
fitData3 <- sub_cause_hap %>%
  mutate(worry = recode(worry, "1" = "Not at all worried", "2" = "Not very worried", "3" = "Somewhat worried", "4" = "Very worried"))

fitData3$worry <- as.factor(fitData3$worry)

#fitData3

Now I am going to create two new models from the subsets that I created earlier. * fitwM2 is with the respondents who believe climate change is happening. * fitwM3 is with the respondents who believe climate change is both happening AND it is human cause (in some capacity).

Just a reminder: According to the United Nations, scientists believe that climate change is happening and it is because of human activities. Therefore, I believe it is important to illustrate the worry levels of individuals who generally believe and agree with scientists.

# Ordinal logit model for all models

fitwM2 <- polr(worry ~ happening + cause_recoded + harm_personally + harm_US + harm_future_gen  + harm_plants_animals +
                 when_harm_US + generation + education, data = fitData2, Hess = T)
Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Warning in polr(worry ~ happening + cause_recoded + harm_personally + harm_US +
: design appears to be rank-deficient, so dropping some coefs
fitwM3 <- polr(worry ~ happening + cause_recoded + harm_personally + harm_US + harm_future_gen + harm_plants_animals +
                 when_harm_US + generation + education, data = fitData3, Hess = T)
Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Warning in polr(worry ~ happening + cause_recoded + harm_personally + harm_US +
: design appears to be rank-deficient, so dropping some coefs
#summary(fitwM1)

myModels <- list(fitwM1, fitwM2, fitwM3)

stargazer(myModels, align = TRUE, type = "text", report = ('vc*p'), column.sep.width = "-1pt",  no.space = TRUE,
          title = "Ordered Logistic Regression Results", column.labels = c("Original","Happening",
                                                                           "Happening and Human Cause"),
          omit = c("cause_recodedCC_not_happening", "generation", "education"))

Ordered Logistic Regression Results
======================================================================================
                                                    Dependent variable:               
                                     -------------------------------------------------
                                                           worry                      
                                      Original    Happening  Happening and Human Cause
                                         (1)         (2)                (3)           
--------------------------------------------------------------------------------------
happeningYes                            0.379                                         
                                      p = 0.297                                       
cause_recodedNat_changes              -0.858**    -0.957**                            
                                      p = 0.024   p = 0.016                           
cause_recodedhuman_act                  0.139       0.252              0.377          
                                      p = 0.686   p = 0.476          p = 0.301        
harm_personallyOnly a little          1.395***    1.573***           2.328***         
                                     p = 0.0004   p = 0.001          p = 0.001        
harm_personallyA moderate amount      2.049***    2.174***           2.769***         
                                     p = 0.00001 p = 0.00002        p = 0.0001        
harm_personallyA great deal           2.595***    2.731***           3.306***         
                                     p = 0.00000 p = 0.00000        p = 0.00001       
harm_USOnly a little                   -0.048      -0.237             -1.435          
                                      p = 0.920   p = 0.718          p = 0.195        
harm_USA moderate amount                0.292       0.219             -0.775          
                                      p = 0.600   p = 0.760          p = 0.488        
harm_USA great deal                    1.502**     1.449*              0.315          
                                      p = 0.012   p = 0.053          p = 0.782        
harm_future_genOnly a little           0.982*      -0.429              0.718          
                                      p = 0.071   p = 0.662          p = 0.696        
harm_future_genA moderate amount       1.576**      0.581              1.408          
                                      p = 0.019   p = 0.589          p = 0.489        
harm_future_genA great deal           2.160***      1.034              1.916          
                                      p = 0.003   p = 0.347          p = 0.345        
harm_plants_animalsOnly a little        0.509       1.498             3.409*          
                                      p = 0.341   p = 0.157          p = 0.100        
harm_plants_animalsA moderate amount   1.107*      1.926*              2.810          
                                      p = 0.100   p = 0.092          p = 0.196        
harm_plants_animalsA great deal        1.708**     2.565**             3.574          
                                      p = 0.017   p = 0.029          p = 0.101        
when_harm_USone_hun_years               0.416      1.515**            3.777**         
                                      p = 0.348   p = 0.035          p = 0.026        
when_harm_USfifty_years                -0.080       0.381              2.440          
                                      p = 0.868   p = 0.604          p = 0.154        
when_harm_UStwn_five_years              0.288       0.812             2.998*          
                                      p = 0.572   p = 0.264          p = 0.078        
when_harm_USten_years                  1.303**     1.887**            4.341**         
                                      p = 0.014   p = 0.011          p = 0.012        
when_harm_USright_now                 2.024***    2.506***           5.005***         
                                     p = 0.00005 p = 0.0005          p = 0.004        
--------------------------------------------------------------------------------------
Observations                             818         678                546           
======================================================================================
Note:                                                      *p<0.1; **p<0.05; ***p<0.01

Looking over the different models, I noticed some variables either became insignificant or significant. For example, from the original to the happening model, harm_US A great deal deceased in significance, and from there to the Happening and Human Cause model, it became insignificant. A variable that did gain significance across the models was when_harm_US one_hun_years!

Model fit

To find the best model, I will be testing the AIC and BIC of each of my models (fitwM0, fitwM1, and fitwM2). The model with the smallest AIC and BIC will be the best fit model!

# AIC Model 0
glance(fitwM1)$AIC
[1] 1135.178
# AIC Model 1
glance(fitwM2)$AIC
[1] 972.0797
# AIC Model 2
glance(fitwM3)$AIC 
[1] 755.8018

Based on the AIC, Model #3 seems to be the strongest and Model 1 seemed the weakest. Now, I am going to check the BIC…

# BIC Model 0
glance(fitwM1)$BIC
[1] 1281.091
# BIC Model 1
glance(fitwM2)$BIC
[1] 1103.135
# BIC Model 2
glance(fitwM3)$BIC
[1] 876.2751

The smallest, therefore the strongest BIC, is Model #3! Based on the AIC and BIC, Model #3 is the best fit model as this model has the smallest BIC and AIC!

An explanation of how the final model was chosen

Model #3 is my final model. My final model was chosen because Model #3 is the best fit model as it has the smallest BIC and AIC for the ordinal logit model.

Interpreting my Model (Model #3)

# making a nice table for my model

modelTable <- coef(summary(fitwM3))

pValue <- pnorm(abs(modelTable[, "t value"]), lower.tail = F) * 2

modelTable <- cbind(modelTable, "p value" = pValue)

stargazer(modelTable, type = "text", title = "My Final Model: Model #3 Table")

My Final Model: Model #3 Table
======================================================================
                                     Value  Std. Error t value p value
----------------------------------------------------------------------
cause_recodedhuman_act               0.377    0.364     1.036   0.300 
harm_personallyOnly a little         2.328    0.696     3.343   0.001 
harm_personallyA moderate amount     2.769    0.710     3.900  0.0001 
harm_personallyA great deal          3.306    0.747     4.427  0.00001
harm_USOnly a little                 -1.435   1.105    -1.298   0.194 
harm_USA moderate amount             -0.775   1.116    -0.694   0.487 
harm_USA great deal                  0.315    1.135     0.277   0.781 
harm_future_genOnly a little         0.718    1.834     0.391   0.695 
harm_future_genA moderate amount     1.408    2.032     0.693   0.488 
harm_future_genA great deal          1.916    2.028     0.945   0.345 
harm_plants_animalsOnly a little     3.409    2.067     1.649   0.099 
harm_plants_animalsA moderate amount 2.810    2.172     1.294   0.196 
harm_plants_animalsA great deal      3.574    2.179     1.640   0.101 
when_harm_USone_hun_years            3.777    1.692     2.232   0.026 
when_harm_USfifty_years              2.440    1.711     1.426   0.154 
when_harm_UStwn_five_years           2.998    1.698     1.765   0.078 
when_harm_USten_years                4.341    1.712     2.535   0.011 
when_harm_USright_now                5.005    1.694     2.955   0.003 
generationMillennials                0.389    0.373     1.043   0.297 
generationGenerationX                0.281    0.375     0.748   0.454 
generationBabyBoomers                0.231    0.365     0.632   0.527 
generationSilent                     -0.277   0.495    -0.560   0.575 
educationhighSchool                  0.500    0.527     0.948   0.343 
educationsomeCollege                 0.581    0.523     1.112   0.266 
educationbachelorDegreeUp            0.524    0.502     1.043   0.297 
Not at all worried| Not very worried 4.406    2.033     2.168   0.030 
Not very worried| Somewhat worried   9.259    2.589     3.577  0.0003 
Somewhat worried| Very worried       13.586   2.620     5.185  0.00000
----------------------------------------------------------------------

I will interpret the results specifically focusing on the the coefficients and the p-values. Significant with positive coefficients, meaning as their levels increase, so will worry levels:

  • harm_personally Only a little
  • harm_personally A moderate amount
  • harm_personally A great deal
  • harm_future_gen A great deal
  • when_harm_US one_hun_years
  • when_harm_US ten_years
  • when_harm_US right_now

There are no significant negative variables.

I will now graph a visual for this table as well!

m3 <- broom::tidy(fitwM3) %>% filter(term %in% c("harm_personallyA great deal", 
                                                "harm_personallyA moderate amount", "harm_personallyOnly a little",
                                                
                                                "harm_USOnly a little", "harm_USA moderate amount",
                                                "harm_USA great deal",
                                                
                                                "harm_future_genOnly a little", "harm_future_genA moderate amount",
                                                "harm_future_genA great deal", 
                                                
                                                "harm_plants_animalsOnly a little",
                                                "harm_plants_animalsA moderate amount", "harm_plants_animalsA great deal",
                                                
                                                "when_harm_USone_hun_years", "when_harm_USfifty_years",
                                                "when_harm_UStwn_five_years", "when_harm_USten_years",
                                                "when_harm_USright_now")) %>%
  mutate(model = "Happening and Human Involvemnt")

m3 <- m3 %>%
  mutate(p_value = 2 * (1 - pnorm(abs(estimate / std.error))),
    significance = case_when(
      p_value < 0.01 ~ "**",
      p_value < 0.05 ~ "*",
      TRUE ~ ""))  # "" for not significant
dwplot(m3,
       vline = geom_vline(
           xintercept = 0,
           colour = "grey60",
           linetype = 2),
       vars_order = c("harm_personallyA great deal", "harm_personallyA moderate amount", "harm_personallyOnly a little",
                      
                      "harm_USA great deal", "harm_USA moderate amount", "harm_USOnly a little",
                      
                      "harm_future_genA great deal", "harm_future_genA moderate amount", "harm_future_genOnly a little",
                      
                      "harm_plants_animalsA great deal", "harm_plants_animalsA moderate amount",
                      "harm_plants_animalsOnly a little",
                      
                      "when_harm_USright_now", "when_harm_USten_years", "when_harm_UStwn_five_years",
                      "when_harm_USfifty_years", "when_harm_USone_hun_years")) %>% 
  relabel_predictors( 
    c("harm_personallyA great deal" = "harm personally a great deal",
      "harm_personallyA moderate amount" = "harm personally a moderate amount",
      "harm_personallyOnly a little" = "harm personally only a little",
      
      "harm_USA great deal" = "harm the US a great deal",
      "harm_USA moderate amount" = "harm the US a moderate amount", 
      "harm_USOnly a little" = "harm the US only a little",
      
      "harm_future_genA great deal" = "harm future generations a great deal", 
      "harm_future_genA moderate amount" = "harm future generations a moderate amount",
      "harm_future_genOnly a little" = "harm future generations only a little",
      
      "harm_plants_animalsA great deal" = "harm plants & animals a great deal", 
      "harm_plants_animalsA moderate amount" = "harm plants & animals a moderate amount",
      "harm_plants_animalsOnly a little" = "harm plants & animals only a little",
      
      "when_harm_USright_now" = "harming the US right now", 
      "when_harm_USten_years" = "will harm the US in 10 years", 
      "when_harm_UStwn_five_years" = "will harm the US in 25 years",
      "when_harm_USfifty_years" = "will harm the US in 50 years",
      "when_harm_USone_hun_years" = "will harm the US in 100 years")
  ) +
  geom_text(
    aes(label = significance, x = estimate, y = term),
    position = position_dodge(width = 0.8),
    size = 4, color = "red", hjust = -0.2
  ) +
  xlab("Coefficients Estimate") +
  ylab("") +
  ggtitle("Predicting Worry") +
  theme_bw(base_size = 10) +
    scale_colour_grey(name = "Models")

I was recommended to create this visual for my dashboard audience!

Probability of Being Worried

Since harm_personally and when_harm_US had three significant variables, I decided I was going to graph the probabilities of being in a certain worry level based either the level of harm or the timing of harm!

probability <- predict(fitwM3, type = "probs")

#head(probability)

fitData3$prob <- probability
prob_personal <- fitData3 %>% 
  group_by(harm_personally, worry) %>% 
  summarise(prob_nw = mean(prob[,1]),
            prob_nvw = mean(prob[,2]),
            prob_sw = mean(prob[,3]),
            prob_vw = mean(prob[,4]))
`summarise()` has grouped output by 'harm_personally'. You can override using
the `.groups` argument.
prob_personal
# A tibble: 13 × 6
# Groups:   harm_personally [4]
   harm_personally   worry                prob_nw prob_nvw prob_sw  prob_vw
   <fct>             <fct>                  <dbl>    <dbl>   <dbl>    <dbl>
 1 Not at all        Not at all worried 0.574      0.415    0.0109 0.000149
 2 Not at all        Not very worried   0.101      0.614    0.277  0.00760 
 3 Not at all        Somewhat worried   0.00758    0.407    0.556  0.0290  
 4 Not at all        Very worried       0.000504   0.0602   0.770  0.170   
 5 Only a little     Not very worried   0.0195     0.380    0.535  0.0658  
 6 Only a little     Somewhat worried   0.00141    0.115    0.656  0.228   
 7 Only a little     Very worried       0.000167   0.0206   0.529  0.450   
 8 A moderate amount Not very worried   0.000897   0.0889   0.638  0.272   
 9 A moderate amount Somewhat worried   0.000400   0.0414   0.525  0.434   
10 A moderate amount Very worried       0.000154   0.0154   0.366  0.619   
11 A great deal      Not very worried   0.00204    0.179    0.665  0.155   
12 A great deal      Somewhat worried   0.0000952  0.0116   0.309  0.679   
13 A great deal      Very worried       0.0000268  0.00338  0.185  0.812   
prob_personal_long <- prob_personal %>%
  pivot_longer(cols = starts_with("prob"),
               names_to = "Worry",
               values_to = "Probability") %>% 
  mutate(Probability = round(Probability * 100, 1))

prob_personal_long$Worry <- factor(prob_personal_long$Worry,
                                   levels = c("prob_nw", "prob_nvw", "prob_sw", "prob_vw"),
                                   labels = c("Not at all worried", "Not very worried", "Somewhat worried", "Very worried"))

prob_personal_long$harm_personally <- factor(prob_personal_long$harm_personally,
                                   labels = c("No harm at all", "Only a little harm", "A moderate amount of harm",
                                              "A great deal of harm"))

prob_personal_long
# A tibble: 52 × 4
# Groups:   harm_personally [4]
   harm_personally worry              Worry              Probability
   <fct>           <fct>              <fct>                    <dbl>
 1 No harm at all  Not at all worried Not at all worried        57.4
 2 No harm at all  Not at all worried Not very worried          41.5
 3 No harm at all  Not at all worried Somewhat worried           1.1
 4 No harm at all  Not at all worried Very worried               0  
 5 No harm at all  Not very worried   Not at all worried        10.1
 6 No harm at all  Not very worried   Not very worried          61.4
 7 No harm at all  Not very worried   Somewhat worried          27.7
 8 No harm at all  Not very worried   Very worried               0.8
 9 No harm at all  Somewhat worried   Not at all worried         0.8
10 No harm at all  Somewhat worried   Not very worried          40.7
# ℹ 42 more rows
prob_per <- prob_personal_long[prob_personal_long$worry==prob_personal_long$Worry, ]

prob_per
# A tibble: 13 × 4
# Groups:   harm_personally [4]
   harm_personally           worry              Worry              Probability
   <fct>                     <fct>              <fct>                    <dbl>
 1 No harm at all            Not at all worried Not at all worried        57.4
 2 No harm at all            Not very worried   Not very worried          61.4
 3 No harm at all            Somewhat worried   Somewhat worried          55.6
 4 No harm at all            Very worried       Very worried              17  
 5 Only a little harm        Not very worried   Not very worried          38  
 6 Only a little harm        Somewhat worried   Somewhat worried          65.6
 7 Only a little harm        Very worried       Very worried              45  
 8 A moderate amount of harm Not very worried   Not very worried           8.9
 9 A moderate amount of harm Somewhat worried   Somewhat worried          52.5
10 A moderate amount of harm Very worried       Very worried              61.9
11 A great deal of harm      Not very worried   Not very worried          17.9
12 A great deal of harm      Somewhat worried   Somewhat worried          30.9
13 A great deal of harm      Very worried       Very worried              81.2
p_harm_plot <- plot_ly(prob_per, x = ~harm_personally, y = ~Probability, color = ~Worry, type = "bar",
                       barmode = "group", 
                       text = ~ paste(Probability, "%"), 
                       hovertext = ~paste("Worry Level:", Worry, "\n",
                                          "Potential Harm Level:", harm_personally, "\n", 
                                          "Percentage = ", Probability, "%"),
                       hoverinfo = "text",
                       colors = c("#D4B9DA", "#DF65B0", "#DD1C77", "#980043")) %>% 
  layout(title = "Probability of Worrying about Climate Change by Personal Harm", 
         xaxis = list(title = "Harm Level (Personal)"),
         yaxis = list(title = "Probability"), 
         legend = list(title=list(text='Worry Levels')))

p_harm_plot
Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

As the personal harm levels intensify, the likelihood of respondents becoming increasingly worried (being in a higher level of worry) rises, which confirms what we saw earlier as well in our other graphs.

prob_when <- fitData3 %>% 
  group_by(when_harm_US, worry) %>% 
  summarise(prob_nw = mean(prob[,1]),
            prob_nvw = mean(prob[,2]),
            prob_sw = mean(prob[,3]),
            prob_vw = mean(prob[,4]))
`summarise()` has grouped output by 'when_harm_US'. You can override using the
`.groups` argument.
#prob_when

prob_when_long <- prob_when %>%
  pivot_longer(cols = starts_with("prob"),
               names_to = "Worry",
               values_to = "Probability") %>% 
  mutate(Probability = round(Probability * 100, 1))

prob_when_long$Worry <- factor(prob_when_long$Worry,
                                   levels = c("prob_nw", "prob_nvw", "prob_sw", "prob_vw"),
                                   labels = c("Not at all worried", "Not very worried", "Somewhat worried", "Very worried"))

prob_when_long$when_harm_US <- factor(prob_when_long$when_harm_US,
                                   labels = c("Never", "100 years", "50 years", "25 years", "10 years", "Right Now"))

#prob_when_long
prob_wh <- prob_when_long[prob_when_long$worry==prob_when_long$Worry, ]

prob_wh
# A tibble: 19 × 4
# Groups:   when_harm_US [6]
   when_harm_US worry              Worry              Probability
   <fct>        <fct>              <fct>                    <dbl>
 1 Never        Not at all worried Not at all worried        68.3
 2 Never        Not very worried   Not very worried          71.9
 3 100 years    Not very worried   Not very worried          54.7
 4 100 years    Somewhat worried   Somewhat worried          65.5
 5 100 years    Very worried       Very worried              45.3
 6 50 years     Not at all worried Not at all worried        19.5
 7 50 years     Not very worried   Not very worried          43.6
 8 50 years     Somewhat worried   Somewhat worried          65.7
 9 50 years     Very worried       Very worried              17.4
10 25 years     Not at all worried Not at all worried        73.6
11 25 years     Not very worried   Not very worried          39.3
12 25 years     Somewhat worried   Somewhat worried          71.6
13 25 years     Very worried       Very worried              21.6
14 10 years     Not very worried   Not very worried          26  
15 10 years     Somewhat worried   Somewhat worried          67.8
16 10 years     Very worried       Very worried              50.8
17 Right Now    Not very worried   Not very worried          10.5
18 Right Now    Somewhat worried   Somewhat worried          46.7
19 Right Now    Very worried       Very worried              69.3
p_when_plot <- plot_ly(prob_wh, x = ~when_harm_US, y = ~Probability, color = ~Worry, type = "bar",
                       barmode = "group", 
                       text = ~ paste(Probability, "%"), 
                       hovertext = ~paste("Worry Level:", Worry, "\n",
                                          "Potential Harm Level:", when_harm_US, "\n", 
                                          "Percentage = ", Probability, "%"),
                       hoverinfo = "text",
                       colors = c("#FDD49E", "#FC8D59", "#E34A33", "#B30000")) %>% 
  layout(title = "Probability of Worry by the Belief of when Climate Change will Harm", 
         xaxis = list(title = "Harm Level (Personal)"),
         yaxis = list(title = "Probability of Worry (%)"), 
         legend = list(title=list(text='Worry Levels')))

p_when_plot
Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'bar' objects don't have these attributes: 'barmode'
Valid attributes include:
'_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

When focusing on the timing of Right Now and 10 years, we can clearly see that respondents are more likely to fall into a higher worry level. Something similar happened to the timing of 100 years as well. From Never to 100 years, we see that worry levels did increase!

Note: As discussed with Professor Yu, the reason why the probabilities do not add up to 100% for either of my probability graphs is because the probabilities represent joint probabilities (events that happen together aka they are not mutually exclusive). Moreover, the combinations do not add to 100% because there are multiple possibilities of how people can be worried and feel threaten by the harm of climate change or of how people can be worried and have a certain belief of when climate change will begin to harm. The graphs are just showing the most relevant combinations.

Conclusion

In conclusion, the results of this study were surprising. American respondents who were more prone to worry about climate change were those who were focused on their own well-being and believed they would be harmed personally in some capacity (a great deal, a moderate amount, or only a little). Other groups that could potentially be harmed, such as people living in the US, future generations, and plants and animals did not have a strong impact on the respondents’ worry levels as expected.

Other groups that could potentially be harmed, such as people living in the US, future generations, and plants and animals did not have a strong impact on the respondents’ worry levels as expected.

Additionally, Americans who believe climate change will harm people living in the US right now, in the next ten years, or in 100 years are also more prone to worry about climate change. Originally, I thought from 100 years to Right now that worry would gradually increase, but that was not the case!

To further study both harm personally and when climate change will harm, I found the probabilities of the worry levels for each. I found as the personal harm level increased from “no harm at all” to “a great deal of harm”, the probability of having in a higher worry level also increased. Moreover, I found that as the timing of harm became closer to present day, the probability of having a higher worry level did not necessarily have a gradual increase. The probability of having a higher worry level did increase as the timing of harm did become more present (from harming in 25 years to right now), however, there was also an increase of having a somewhat higher worry level from “never” to “100 years.”

Looking Forward

Overall, more research regarding the association of climate change perceived harms to different groups and worry needs to de done to try and replicate these findings.

Next steps for this project would be to study if perceived personal harm and believed timing may lead someone to be more proactive about being eco-friendly in order to soothe their worries. Additionally, if so, does it actually help reduce their worry?

I think it would also be interesting to know if someone has already been affected my climate change and at what level (not at all, only a little, a moderate amount or a great deal). I think the results would be interesting to explore with worry.

References

  • Lindsey, Rebecca, and Luann Dahlman. “Climate Change: Global Temperature.” NOAA Climate.Gov, 18 Jan. 2024, www.climate.gov/news-features/understanding-climate/climate-change-global-temperature.
  • Narawad, Aniket, and Julian Wettengel. “Global Surveys Show People’s Growing Concern about Climate Change.” Clean Energy Wire, 12 Nov. 2024, www.cleanenergywire.org/factsheets/global-surveys-show-peoples-growing-concern-about-climate-change#:~:text=The%20group%20of%20countries%20surveyed,income%20are%20slightly%20more%20concerned.
  • Threadgold, Steven. “‘I reckon my life will be easy, but my kids will be buggered’: Ambivalence in young people’s positive perceptions of individual futures and their visions of environmental collapse.” Journal of Youth Studies, vol. 15, no. 1, Feb. 2012, pp. 17–32, https://doi.org/10.1080/13676261.2011.618490.
  • “What Is Climate Change?” United Nations, United Nations, www.un.org/en/climatechange/what-is-climate-change. Accessed 10 Dec. 2024.
  • “Yale Climate Opinion Maps 2023.” Yale Program on Climate Change Communication, 10 December 2024.